#ifndef __APP_DEVICE_H__
#define __APP_DEVICE_H__

#include "pthread.h"
#include "app_buffer.h"

// #define DEVICE_FILE_NAME "/dev/ttyS1" /* 生产设备 */
#define DEVICE_FILE_NAME "/GATERWAY_DEVICE_FILE" /* 测试设备 */

typedef struct {
    char *dev_filename; /* 设备文件名 带路径 */
    int dev_fd; /* 设备文件描述符 */
    pthread_t read_thread; /* 设备文件读线程 */
    int (*post_read)(char*, int); /* 读后预处理 */
    int (*pre_write)(char*, int); /* 写后预处理 */
    int is_runing; /* 线程是否在运行 */
    app_buffer_t *up_buffer; /* 上行数据缓冲区 */
    app_buffer_t *down_buffer;
} app_device_t;

/**
 * @brief : 初始化设备
 * @return app_device_t*  返回设备指针
 */
app_device_t *app_device_init(void);

/**
 * @brief :  启动设备
 * 1 启动设备文件读线程
 * 2 向MQTTi莫夸注册接收到数据的回调函数
 */
void app_device_start(void);

/**
 * @brief : 停止 销毁设备
 */
void app_device_destroy(void);

#endif /* __APP_DEVICE_H__ */
